package com.shopping.utils;

import javax.servlet.http.HttpServletRequest;

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;



@ControllerAdvice
public class ExceptionConfig {
	
	/**
	 * 统一处理业务异常 controller。
	 * 只要异常没有被处理，一直被抛出controller，就会来到这里匹配。
	 * 
	 */
		
	  
    /**
     * 自定义业务异常，用于特定处理。
     */
    @SuppressWarnings("serial")
	public static class MyException extends Exception {
    	public MyException(String msg) {super(msg);}
    }
	
    
    
    /**
     * 处理自定义的业务异常
     * @param exception
     * @return
     */
    @ExceptionHandler(MyException.class)
    public String exception(MyException exception, HttpServletRequest request){
    	
    	//1.获取自定义业务异常封装的信息。
    	request.setAttribute("msg", exception.getMessage());
    	
    	//2.跳转到到error.jsp页面展示msg。
    	return "/index/error.jsp";
    }
    
    
    /**
     * 处理其他所有异常
     * @param exception
     * @return
     */
    @ExceptionHandler(Exception.class)
    public String exception(Exception exception, HttpServletRequest request){
    	
    	//1.获取自定义业务异常封装的信息。
    	request.setAttribute("msg", "系统错误，请联系管理员！");
    	
    	//2.跳转到到error.jsp页面展示msg。
    	return "/index/error.jsp";
    }    
  
    
}

